package cn.im.repository;

import cn.im.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface UserRepo extends JpaRepository<User,Long> {

    /**
     * 扩展查询：根据账号查找bean
     * @param account
     * @return
     */
    User findByAccount(String account);


    /**
     * 扩展查询：根据账号、密码查找bean
     * @param account
     * @param pwd
     * @return
     */
    User findByAccountAndPwd(String account,String pwd);

    /**
     * 扩展查询：查找id大于xx的用户列表
     * @param id
     * @return
     */
    List<User> findAllByIdGreaterThan(Long id);


    /**
     * 自定义查询：PQL语法
     * @param name1
     * @param name2
     * @return
     */
    @Query("select O from User O where O.name=:name1 or O.name=:name2")
    List<User> findTwoName(@Param("name1") String name1, @Param("name2") String name2);


    /**
     * 自定义查询：原生sql语法
     * @param name1
     * @param name2
     * @return
     */
    @Query(nativeQuery = true,value = "select * from auth_user where name=:name1 or name=:name2")
    List<User> findSql(@Param("name1") String name1, @Param("name2") String name2);


    /**
     * 自定义查询：原生sql语法
     * @param name1
     * @param name2
     * @return
     */
    @Query(nativeQuery = true,value = "select * from auth_user where name=:name1 or name=:name2")
    List<User> countCustom(@Param("name1") String name1, @Param("name2") String name2);
}
